const request = require('./request.js').default;
const { interactionAPI } = require('./interaction.js');

/**
 * 书摘相关 API
 */
const postAPI = {
  /**
   * 获取我的书摘列表
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   */
  getMyQuotes: (params = {}) => request('/book/getUserQuotes', 'GET', params),

  /**
   * 获取社区书摘列表
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   * @param {string} params.sortBy - 排序方式 (latest, popular, hot)
   * @param {string} params.bookName - 书名筛选
   * @param {Array} params.tags - 标签筛选
   */
  getCommunityQuotes: (params = {}) => request('/book-quote/community', 'GET', params),

  /**
   * 发布书摘
   * @param {Object} data - 书摘数据
   * @param {string} data.bookId - 书籍ID
   * @param {string} data.content - 书摘内容
   * @param {string} data.thoughts - 读书感受
   * @param {Array} data.images - 图片数组
   * @param {Array} data.tags - 标签数组
   */
  createQuote: (data) => request('/book-quote', 'POST', data),

  /**
   * 获取书摘详情
   * @param {string} quoteId - 书摘ID
   */
  getQuoteDetail: (quoteId) => request(`/book-quote/${quoteId}`, 'GET'),

  /**
   * 点赞书摘（使用新的通用接口）
   * @param {string} quoteId - 书摘ID
   */
  likeQuote: (quoteId) => interactionAPI.quote.like(quoteId),

  /**
   * 取消点赞（使用新的通用接口）
   * @param {string} quoteId - 书摘ID
   */
  unlikeQuote: (quoteId) => interactionAPI.quote.unlike(quoteId),

  /**
   * 收藏书摘（使用新的通用接口）
   * @param {string} quoteId - 书摘ID
   */
  collectQuote: (quoteId) => interactionAPI.quote.favorite(quoteId),

  /**
   * 取消收藏（使用新的通用接口）
   * @param {string} quoteId - 书摘ID
   */
  uncollectQuote: (quoteId) => interactionAPI.quote.unfavorite(quoteId),

  /**
   * 评论书摘（使用新的通用接口）
   * @param {string} quoteId - 书摘ID
   * @param {Object} data - 评论数据
   * @param {string} data.content - 评论内容
   * @param {string} data.parentId - 父评论ID（回复时使用）
   */
  commentQuote: (quoteId, data) => interactionAPI.quote.addComment(quoteId, data),

  /**
   * 获取书摘评论列表（使用新的通用接口）
   * @param {string} postId - 书摘ID
   * @param {Object} params - 查询参数
   */
  getPostComments: (postId, params = {}) => interactionAPI.quote.getComments(postId, params),

  /**
   * 删除书摘
   * @param {string} postId - 书摘ID
   */
  deletePost: (postId) => request(`/posts/${postId}`, 'DELETE'),

  // ==================== 云汉页面专用的新接口 ====================
  
  /**
   * 获取云汉页面书摘列表（支持最新/热门/分类筛选）
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   * @param {string} params.sortType - 排序方式 (latest: 最新, hot: 热门)
   * @param {number} params.categoryId - 分类ID（可选）
   * @param {string} params.keyword - 搜索关键词（可选）
   */
  getCloudHanPosts: (params = {}) => request('/book-quote/cloud-han', 'GET', params),

  /**
   * 获取云汉页面热门书摘（点赞+评论排序）
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   * @param {number} params.categoryId - 分类ID（可选）
   */
  getHotPosts: (params = {}) => request('/book-quote/hot', 'GET', params),

  /**
   * 获取云汉页面最新书摘
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   * @param {number} params.categoryId - 分类ID（可选）
   */
  getLatestPosts: (params = {}) => request('/book-quote/latest', 'GET', params),

  /**
   * 根据分类获取云汉页面书摘
   * @param {number} categoryId - 分类ID
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   * @param {string} params.sortType - 排序方式 (latest: 最新, hot: 热门)
   */
  getPostsByCategory: (categoryId, params = {}) => request(`/book-quote/category/${categoryId}`, 'GET', params),

  /**
   * 搜索云汉页面书摘（书名/作者/内容模糊匹配）
   * @param {Object} params - 搜索参数
   * @param {string} params.keyword - 搜索关键词
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   * @param {number} params.categoryId - 分类ID（可选）
   */
  searchCloudHanPosts: (params = {}) => request('/book-quote/search', 'GET', params),
};

// 云汉页面专用接口
const cloudHanAPI = {
  // 获取云汉页面书摘列表（支持最新/热门/分类筛选）
  getCloudHanPosts: (params = {}) => request('/book-quote/cloud-han', 'GET', params),

  // 获取热门书摘
  getHotPosts: (params = {}) => request('/book-quote/hot', 'GET', params),

  // 获取最新书摘
  getLatestPosts: (params = {}) => request('/book-quote/latest', 'GET', params),

  // 根据分类获取书摘
  getPostsByCategory: (categoryId, params = {}) => request(`/book-quote/category/${categoryId}`, 'GET', params),

  // 搜索书摘
  searchCloudHanPosts: (params = {}) => request('/book-quote/search', 'GET', params),

  // 点赞书摘（使用新的通用接口）
  likeQuote: (quoteId) => interactionAPI.quote.like(quoteId),

  // 取消点赞（使用新的通用接口）
  unlikeQuote: (quoteId) => interactionAPI.quote.unlike(quoteId),

  // 收藏书摘（使用新的通用接口）
  collectQuote: (quoteId) => interactionAPI.quote.favorite(quoteId),

  // 取消收藏（使用新的通用接口）
  uncollectQuote: (quoteId) => interactionAPI.quote.unfavorite(quoteId),

  // 评论书摘（使用新的通用接口）
  commentQuote: (quoteId, data) => interactionAPI.quote.addComment(quoteId, data),

  // 获取书摘评论列表（使用新的通用接口）
  getPostComments: (postId, params = {}) => interactionAPI.quote.getComments(postId, params),

  // 回复评论（使用新的通用接口）
  replyComment: (commentId, data) => interactionAPI.replyComment(commentId, data)
};

module.exports = {
  postAPI,
  cloudHanAPI
};
